package com.java.common.utils;

import java.util.List;

import com.java.common.lang.exception.BaseException;

/**
 * AssertKit
 * 
 * @author yilabao
 * @date 2021年3月3日
 */
public class AssertKit {

    private AssertKit() {
    }

    /**
     * 参数不为null时抛出异常
     *
     * @author yilabao
     * @date 2021年5月10日
     * @param obj
     * @param msg
     */
    public static void isNull(Object obj, String msg) {
        if (obj != null) {
            throwException(msg);
        }
    }

    /**
     * 参数为null时抛出异常
     *
     * @author yilabao
     * @date 2021年3月3日
     * @param obj
     * @param msg
     */
    public static void notNull(Object obj, String msg) {
        if (obj == null) {
            throwException(msg);
        }
    }

    /**
     * 参数isBlank时抛出异常
     *
     * @author yilabao
     * @date 2021年3月3日
     * @param obj
     * @param msg
     */
    public static void notBlank(Object obj, String msg) {
        notNull(obj, msg);
        if (StringUtils.isBlank(String.valueOf(obj))) {
            throwException(msg);
        }
    }

    /**
     * 参数不为ture抛出异常
     *
     * @author yilabao
     * @date 2021年3月8日
     * @param obj
     * @param msg
     */
    public static void isTrue(Boolean obj, String msg) {
        notNull(obj, msg);
        if (obj != true) {
            throwException(msg);
        }
    }

    /**
     * 参数不为false抛出异常
     *
     * @author yilabao
     * @date 2021年5月10日
     * @param obj
     * @param msg
     */
    public static void isFalse(Boolean obj, String msg) {
        notNull(obj, msg);
        if (obj != false) {
            throwException(msg);
        }
    }

    /**
     * 参数为null或空抛出异常
     *
     * @author yilabao
     * @date 2021年4月29日
     * @param list
     * @param msg
     */
    public static void notEmpty(List<?> list, String msg) {
        notNull(list, msg);
        if (list.isEmpty()) {
            throwException(msg);
        }
    }

    /**
     * 参数为null或非正数抛出异常
     *
     * @author yilabao
     * @date 2022年6月30日
     * @param num
     * @param msg
     */
    public static void isPositive(Integer num, String msg) {
        notNull(num, msg);
        isTrue(num.compareTo(0) > 0, msg);
    }

    private static void throwException(String msg) {
        throw new BaseException(msg);
    }

}
